package model;

import java.util.ArrayList;
import java.util.List;

public class Student extends Person {
    private List<Course> selectedCourses; // 已选课程列表（支持多选）

    // 构造方法：调用父类构造初始化个人信息
    public Student(String id, String name, String gender) {
        super(id, name, gender);
        this.selectedCourses = new ArrayList<>();
    }

    // 选课方法：将课程添加到已选列表
    public void selectCourse(Course course) {
        if (!selectedCourses.contains(course)) {
            selectedCourses.add(course);
            System.out.println("学生[" + name + "]成功选修课程：" + course.getCourseName());
        } else {
            System.out.println("学生[" + name + "]已选过该课程，无需重复选择");
        }
    }

    // 退课方法：从已选列表移除课程
    public void dropCourse(Course course) {
        if (selectedCourses.contains(course)) {
            selectedCourses.remove(course);
            System.out.println("学生[" + name + "]成功退选课程：" + course.getCourseName());
        } else {
            System.out.println("学生[" + name + "]未选该课程，无法退课");
        }
    }

    // 打印课表：自动关联课程的教师信息
    public void printSchedule() {
        System.out.println("\n=== 学生[" + name + "]的课表 ===");
        if (selectedCourses.isEmpty()) {
            System.out.println("当前未选任何课程");
            return;
        }
        // 遍历已选课程，输出详细信息
        for (Course course : selectedCourses) {
            System.out.println("课程名：" + course.getCourseName());
            System.out.println("课号：" + course.getCourseId()); // 调用Course的Getter方法
            System.out.println("上课地点：" + course.getLocation());
            System.out.println("上课时间：" + course.getTime());
            System.out.println("授课教师：" + course.getTeacher().getName());
            System.out.println("------------------------");
        }
    }
}